home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 4664 / 4664.xpi / chrome / twitterbar.jar / content / common.js next >
Text File  |  2010-02-08  |  5KB  |  164 lines

  1. var TWITTERBAR_COMMON = {
  2.     get strings() { return document.getElementById("twitterbar-strings"); },
  3.     prefs : Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.twitter."),
  4.     
  5.     oauth : {
  6.         consumer_key : "lwVKpcTJM69MeYobWq3mg",
  7.         consumer_secret : "TVjchnocdkVUcFtNhzCzVwOql5meAgbShN621r6bueE", 
  8.         
  9.         request_token : {
  10.             oauth_token : "",
  11.             oauth_token_secret : ""
  12.         },
  13.         
  14.         serviceProvider : {
  15.             signatureMethod : "HMAC-SHA1",
  16.             requestTokenURL : "http://twitter.com/oauth/request_token",
  17.             userAuthorizationURL : "http://twitter.com/oauth/authorize",
  18.             accessTokenURL : "http://twitter.com/oauth/access_token",
  19.             echoURL : "http://www.chrisfinke.com/oauth/twitterbar"
  20.         }
  21.     },
  22.     
  23.     alert : function (msg) {
  24.         var title = TWITTERBAR_COMMON.strings.getString("twitterbar.alertTitle");
  25.         
  26.         var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  27.                                 .getService(Components.interfaces.nsIPromptService);
  28.         prompts.alert(null, title, msg);
  29.     },
  30.     
  31.     confirm : function (msg) {
  32.         var title = TWITTERBAR_COMMON.strings.getString("twitterbar.alertTitle");
  33.         
  34.         var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  35.                                 .getService(Components.interfaces.nsIPromptService);
  36.         return prompts.confirm(null, title, msg);
  37.     },
  38.     
  39.     confirmPost : function () {
  40.         var title = TWITTERBAR_COMMON.strings.getString("twitterbar.alertTitle");
  41.         var msg = TWITTERBAR_COMMON.strings.getString("twitterbar.confirmPostToTwitter");
  42.         var cbMsg = TWITTERBAR_COMMON.strings.getString("twitterbar.confirmPrefString");
  43.         
  44.         var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  45.                                 .getService(Components.interfaces.nsIPromptService);
  46.  
  47.         var check = { value : TWITTERBAR_COMMON.prefs.getBoolPref("confirm") };
  48.         var result = prompts.confirmCheck(null, title, msg, cbMsg, check);
  49.         
  50.         if (result) {
  51.             TWITTERBAR_COMMON.prefs.setBoolPref("confirm", check.value);
  52.             return true;
  53.         }
  54.         
  55.         return false;
  56.     },
  57.  
  58.     getTrends : function () {
  59.         var lastUpdate = TWITTERBAR_COMMON.prefs.getCharPref("trends.update");
  60.         var trends = TWITTERBAR_COMMON.prefs.getCharPref("trends");
  61.  
  62.         if (trends == "" || (new Date().getTime()) - lastUpdate > (1000 * 60 * 60 * 1.8)) {
  63.             var feedUrl = "http://www.oneriot.com/rss/trendingtopics";
  64.  
  65.             var req = new XMLHttpRequest();
  66.             req.open("GET", feedUrl, true);
  67.  
  68.             req.onreadystatechange = function () {
  69.                 if (req.readyState == 4) {
  70.                     if (req.status == 200) {
  71.                         var ioService = Components.classes["@mozilla.org/network/io-service;1"]
  72.                                         .getService(Components.interfaces.nsIIOService);
  73.                         var data = req.responseText;
  74.                         var uri = ioService.newURI(feedUrl, null, null);
  75.  
  76.                         if (data.length) {
  77.                             var parser = Components.classes["@mozilla.org/feed-processor;1"]
  78.                                             .createInstance(Components.interfaces.nsIFeedProcessor);
  79.                             var listener = TWITTERBAR_COMMON;
  80.  
  81.                             try {
  82.                                 parser.listener = listener;
  83.                                 parser.parseFromString(data, uri);
  84.                             } catch (e) {
  85.                             }
  86.                         }
  87.                     }
  88.                 }
  89.             };
  90.  
  91.             req.send(null);
  92.         }
  93.     },
  94.  
  95.     handleResult: function(result) {
  96.         TWITTERBAR_COMMON.prefs.setCharPref("trends.update", new Date().getTime());
  97.  
  98.         if (result.bozo) {
  99.             return;
  100.         }
  101.  
  102.         var feed = result.doc;
  103.  
  104.         if (!feed) {
  105.             return;
  106.         }
  107.  
  108.         try {
  109.             feed.QueryInterface(Components.interfaces.nsIFeed);
  110.         } catch (e) {
  111.             return;
  112.         }
  113.  
  114.         var numItems = Math.min(10, feed.items.length);
  115.  
  116.         var trends = [];
  117.  
  118.         for (var i = 0; i < numItems; i++) {
  119.             var item = feed.items.queryElementAt(i, Components.interfaces.nsIFeedEntry);
  120.             trends.push(item.title.plainText());
  121.         }
  122.  
  123.         delete result;
  124.  
  125.         TWITTERBAR_COMMON.prefs.setCharPref("trends", trends.join("\t"));
  126.     },
  127.     
  128.     addTrends : function (page) {
  129.         // Check for the trending topics.
  130.         var trends = page.getElementById("trends");
  131.  
  132.         if (trends) {
  133.             var topics = TWITTERBAR_COMMON.prefs.getCharPref("trends").split("\t");
  134.     
  135.             if (topics) {
  136.                 var str = '<h2 id="twitterbar-trends" class="sidebar-title" style="background: transparent !important;"><span title="'+this.strings.getString("twitterbar.trends.byline")+'">'+this.strings.getString("twitterbar.trends.title")+'</span></h2>';
  137.                 str += '<ul class="sidebar-menu more-trends-links">';
  138.         
  139.                 var limit = Math.min(10, topics.length);
  140.         
  141.                 for (var i = 0; i < topics.length; i++) {
  142.                     str += '<li class="link-title"><a target="_blank" title="'+topics[i]+'" href="'+TWITTERBAR_COMMON.getSearchURL(topics[i], "trends-sidebar")+'"><span>'+topics[i]+'</span></a></li>';
  143.                 }
  144.     
  145.                 str += '<li><small style="display: block; padding: 5px 14px 5px 14px;">'+this.strings.getString("twitterbar.trends.explanation")+'</small></li>';
  146.                 str += '</ul>';
  147.                 str += '<hr />';
  148.  
  149.                 trends.innerHTML += str;
  150.             }
  151.         }
  152.     },
  153.     
  154.     getSearchURL : function (search_terms, source) {
  155.         search_terms = encodeURIComponent(search_terms);
  156.         search_terms = search_terms.replace(/%20/g, "+");
  157.         
  158.         if (!source) { 
  159.             source = "browserBox";
  160.         }
  161.         
  162.         return "http://www.oneriot.com/search?q=" + search_terms + "&format=html&ssrc="+source+"&spid=86f2f5da-3b24-4a87-bbb3-1ad47525359d&p=twitterbar-ff/"+TWITTERBAR.version;
  163.     }
  164. };